Micron Document
<!DOCTYPE html>
<html class="client-nojs vector-feature-night-mode-disabled vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-sticky-header-enabled" lang="en" dir="ltr"><head>
<meta charset="UTF-8">
<title>For loop</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="canonical" href="https://en.wikipedia.org/wiki/For_loop"> <link href="./mw/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/ext.pygments.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/user.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./mw/site.styles.css">
<link rel="stylesheet" type="text/css" href="./mw/noscript.css">
<link rel="stylesheet" type="text/css" href="./footer.css">
<link rel="stylesheet" type="text/css" href="./vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-For_loop rootpage-For_loop skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading">
<span id="openzim-page-title" class="mw-page-title-main"><span class="mw-page-title-main">For loop</span></span>
</h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="en" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr">

<style data-mw-deduplicate="TemplateStyles:r1129693374">
/* start https://en.wikipedia.org/ */


.mw-parser-output .hlist dl,.mw-parser-output .hlist ol,.mw-parser-output .hlist ul{margin:0;padding:0}.mw-parser-output .hlist dd,.mw-parser-output .hlist dt,.mw-parser-output .hlist li{margin:0;display:inline}.mw-parser-output .hlist.inline,.mw-parser-output .hlist.inline dl,.mw-parser-output .hlist.inline ol,.mw-parser-output .hlist.inline ul,.mw-parser-output .hlist dl dl,.mw-parser-output .hlist dl ol,.mw-parser-output .hlist dl ul,.mw-parser-output .hlist ol dl,.mw-parser-output .hlist ol ol,.mw-parser-output .hlist ol ul,.mw-parser-output .hlist ul dl,.mw-parser-output .hlist ul ol,.mw-parser-output .hlist ul ul{display:inline}.mw-parser-output .hlist .mw-empty-li{display:none}.mw-parser-output .hlist dt::after{content:": "}.mw-parser-output .hlist dd::after,.mw-parser-output .hlist li::after{content:" · ";font-weight:bold}.mw-parser-output .hlist dd:last-child::after,.mw-parser-output .hlist dt:last-child::after,.mw-parser-output .hlist li:last-child::after{content:none}.mw-parser-output .hlist dd dd:first-child::before,.mw-parser-output .hlist dd dt:first-child::before,.mw-parser-output .hlist dd li:first-child::before,.mw-parser-output .hlist dt dd:first-child::before,.mw-parser-output .hlist dt dt:first-child::before,.mw-parser-output .hlist dt li:first-child::before,.mw-parser-output .hlist li dd:first-child::before,.mw-parser-output .hlist li dt:first-child::before,.mw-parser-output .hlist li li:first-child::before{content:" (";font-weight:normal}.mw-parser-output .hlist dd dd:last-child::after,.mw-parser-output .hlist dd dt:last-child::after,.mw-parser-output .hlist dd li:last-child::after,.mw-parser-output .hlist dt dd:last-child::after,.mw-parser-output .hlist dt dt:last-child::after,.mw-parser-output .hlist dt li:last-child::after,.mw-parser-output .hlist li dd:last-child::after,.mw-parser-output .hlist li dt:last-child::after,.mw-parser-output .hlist li li:last-child::after{content:")";font-weight:normal}.mw-parser-output .hlist ol{counter-reset:listitem}.mw-parser-output .hlist ol>li{counter-increment:listitem}.mw-parser-output .hlist ol>li::before{content:" "counter(listitem)"\a0 "}.mw-parser-output .hlist dd ol>li:first-child::before,.mw-parser-output .hlist dt ol>li:first-child::before,.mw-parser-output .hlist li ol>li:first-child::before{content:" ("counter(listitem)"\a0 "}


/* end https://en.wikipedia.org/ */
</style><style data-mw-deduplicate="TemplateStyles:r1246091330">
/* start https://en.wikipedia.org/ */


.mw-parser-output .sidebar{width:22em;float:right;clear:right;margin:0.5em 0 1em 1em;background:var(--background-color-neutral-subtle,#f8f9fa);border:1px solid var(--border-color-base,#a2a9b1);padding:0.2em;text-align:center;line-height:1.4em;font-size:88%;border-collapse:collapse;display:table}body.skin-minerva .mw-parser-output .sidebar{display:table!important;float:right!important;margin:0.5em 0 1em 1em!important}.mw-parser-output .sidebar-subgroup{width:100%;margin:0;border-spacing:0}.mw-parser-output .sidebar-left{float:left;clear:left;margin:0.5em 1em 1em 0}.mw-parser-output .sidebar-none{float:none;clear:both;margin:0.5em 1em 1em 0}.mw-parser-output .sidebar-outer-title{padding:0 0.4em 0.2em;font-size:125%;line-height:1.2em;font-weight:bold}.mw-parser-output .sidebar-top-image{padding:0.4em}.mw-parser-output .sidebar-top-caption,.mw-parser-output .sidebar-pretitle-with-top-image,.mw-parser-output .sidebar-caption{padding:0.2em 0.4em 0;line-height:1.2em}.mw-parser-output .sidebar-pretitle{padding:0.4em 0.4em 0;line-height:1.2em}.mw-parser-output .sidebar-title,.mw-parser-output .sidebar-title-with-pretitle{padding:0.2em 0.8em;font-size:145%;line-height:1.2em}.mw-parser-output .sidebar-title-with-pretitle{padding:0.1em 0.4em}.mw-parser-output .sidebar-image{padding:0.2em 0.4em 0.4em}.mw-parser-output .sidebar-heading{padding:0.1em 0.4em}.mw-parser-output .sidebar-content{padding:0 0.5em 0.4em}.mw-parser-output .sidebar-content-with-subgroup{padding:0.1em 0.4em 0.2em}.mw-parser-output .sidebar-above,.mw-parser-output .sidebar-below{padding:0.3em 0.8em;font-weight:bold}.mw-parser-output .sidebar-collapse .sidebar-above,.mw-parser-output .sidebar-collapse .sidebar-below{border-top:1px solid #aaa;border-bottom:1px solid #aaa}.mw-parser-output .sidebar-navbar{text-align:right;font-size:115%;padding:0 0.4em 0.4em}.mw-parser-output .sidebar-list-title{padding:0 0.4em;text-align:left;font-weight:bold;line-height:1.6em;font-size:105%}.mw-parser-output .sidebar-list-title-c{padding:0 0.4em;text-align:center;margin:0 3.3em}@media(max-width:640px){body.mediawiki .mw-parser-output .sidebar{width:100%!important;clear:both;float:none!important;margin-left:0!important;margin-right:0!important}}body.skin--responsive .mw-parser-output .sidebar a>img{max-width:none!important}@media screen{html.skin-theme-clientpref-night .mw-parser-output .sidebar:not(.notheme) .sidebar-list-title,html.skin-theme-clientpref-night .mw-parser-output .sidebar:not(.notheme) .sidebar-title-with-pretitle{background:transparent!important}html.skin-theme-clientpref-night .mw-parser-output .sidebar:not(.notheme) .sidebar-title-with-pretitle a{color:var(--color-progressive)!important}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .sidebar:not(.notheme) .sidebar-list-title,html.skin-theme-clientpref-os .mw-parser-output .sidebar:not(.notheme) .sidebar-title-with-pretitle{background:transparent!important}html.skin-theme-clientpref-os .mw-parser-output .sidebar:not(.notheme) .sidebar-title-with-pretitle a{color:var(--color-progressive)!important}}@media print{body.ns-0 .mw-parser-output .sidebar{display:none!important}}


/* end https://en.wikipedia.org/ */
</style><table class="sidebar nomobile nowraplinks"><tbody><tr><th class="sidebar-title"><a href="Control_flow#Loops" title="Control flow">Loop constructs</a></th></tr><tr><td class="sidebar-content">
<div class="hlist">
<ul><li><a href="Do_while_loop" title="Do while loop">Do while loop</a></li>
<li><a href="While_loop" title="While loop">While loop</a></li>

<li><a href="Foreach_loop" title="Foreach loop">Foreach loop</a></li>
<li><a href="Infinite_loop" title="Infinite loop">Infinite loop</a></li>
<li><a href="Control_flow" title="Control flow">Control flow</a></li></ul>
</div></td>
</tr><tr><td class="sidebar-navbar"><style data-mw-deduplicate="TemplateStyles:r1239400231">
/* start https://en.wikipedia.org/ */


.mw-parser-output .navbar{display:inline;font-size:88%;font-weight:normal}.mw-parser-output .navbar-collapse{float:left;text-align:left}.mw-parser-output .navbar-boxtext{word-spacing:0}.mw-parser-output .navbar ul{display:inline-block;white-space:nowrap;line-height:inherit}.mw-parser-output .navbar-brackets::before{margin-right:-0.125em;content:"[ "}.mw-parser-output .navbar-brackets::after{margin-left:-0.125em;content:" ]"}.mw-parser-output .navbar li{word-spacing:-0.125em}.mw-parser-output .navbar a>span,.mw-parser-output .navbar a>abbr{text-decoration:inherit}.mw-parser-output .navbar-mini abbr{font-variant:small-caps;border-bottom:none;text-decoration:none;cursor:inherit}.mw-parser-output .navbar-ct-full{font-size:114%;margin:0 7em}.mw-parser-output .navbar-ct-mini{font-size:114%;margin:0 4em}html.skin-theme-clientpref-night .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}@media(prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}}@media print{.mw-parser-output .navbar{display:none!important}}


/* end https://en.wikipedia.org/ */
</style></td></tr></tbody></table>
<p>In <a href="Computer_science" title="Computer science">computer science</a>, a <b>for-loop</b> or <b>for loop</b> is a <a href="Control_flow" title="Control flow">control flow</a> <a href="Statement_(computer_science)" title="Statement (computer science)">statement</a> for specifying <a href="Iteration" title="Iteration">iteration</a>. Specifically, a for-loop functions by running a section of code repeatedly until a certain condition has been satisfied.
</p><p>
For-loops have two parts: a header and a body. The header defines how the loop will iterate, and the body is the code executed once per iteration. The header often declares an explicit <a class="mw-selflink-fragment" href="#Loop_counters">loop counter</a> or loop <a href="Variable_(computer_science)" title="Variable (computer science)">variable</a>. This allows the body to know which iteration of the loop is being executed. (for example, whether this is the third or fourth iteration of the loop) For-loops are typically used when the number of iterations is known before entering the loop. A for-loop can be thought of as <a href="Syntactic_sugar" title="Syntactic sugar">syntactic sugar</a> for a <a href="While-loop" class="mw-redirect" title="While-loop">while-loop</a> which increments and tests a loop variable. For example, this JavaScript for-loop:</p><div class="mw-highlight mw-highlight-lang-javascript mw-content-ltr" dir="ltr"><pre><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mf">5</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">i</span><span class="p">);</span>
<span class="p">}</span>
</pre></div><p>Is equivalent to this JavaScript while-loop:</p><div class="mw-highlight mw-highlight-lang-javascript mw-content-ltr" dir="ltr"><pre><span class="kd">let</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span>
<span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="nx">i</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mf">5</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">i</span><span class="p">);</span>
<span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="p">;</span>
<span class="p">}</span>
</pre></div><p>Both will run <code>console.log()</code> on the numbers 0, 1, 2, 3, and 4 in that order.
</p><p>Various keywords are used to indicate the usage of a for loop: descendants of <a href="ALGOL" title="ALGOL">ALGOL</a> use "<style data-mw-deduplicate="TemplateStyles:r886049734">
/* start https://en.wikipedia.org/ */


.mw-parser-output .monospaced{font-family:monospace,monospace}


/* end https://en.wikipedia.org/ */
</style><span class="monospaced">for</span>", while descendants of <a href="Fortran" title="Fortran">Fortran</a> use "<span class="monospaced">do</span>". There are other possibilities, for example <a href="COBOL" title="COBOL">COBOL</a> which uses <span class="nowrap"><code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">PERFORM VARYING</code></span>.
</p><p>The name <i>for-loop</i> comes from the word <a href="https://en.wiktionary.org/wiki/for" class="extiw external" title="wiktionary:for">for</a>. <i>For</i> is used as the <a href="Reserved_word" title="Reserved word">reserved word</a> (or keyword) in many programming languages to introduce a for-loop. The term in English dates to <a href="ALGOL_58" title="ALGOL 58">ALGOL 58</a> and was popularized in <a href="ALGOL_60" title="ALGOL 60">ALGOL 60</a>. It is the direct translation of the earlier German <i lang="de"><a href="https://en.wiktionary.org/wiki/f%C3%BCr#German" class="extiw external" title="wikt:für">für</a></i> and was used in <a href="Superplan" title="Superplan">Superplan</a> (1949–1951) by <a href="Heinz_Rutishauser" title="Heinz Rutishauser">Heinz Rutishauser</a>. Rutishauser was involved in defining ALGOL 58 and ALGOL 60.<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> The loop body is executed "for" the given values of the loop variable. This is more explicit in <a href="ALGOL" title="ALGOL">ALGOL</a> versions of the for statement where a list of possible values and increments can be specified.
</p><p>In Fortran and <a href="PL/I" title="PL/I">PL/I</a>, the keyword <span class="monospaced">DO</span> is used for the same thing and it is named a <i>do-loop</i>; this is different from a <i><a href="Do_while_loop" title="Do while loop">do while loop</a></i>.
</p>
<meta property="mw:PageProp/toc">
<div class="mw-heading mw-heading2"><h2 id="FOR">FOR</h2></div>

<p>A for-loop statement is available in most <a href="Imperative_programming" title="Imperative programming">imperative programming</a> languages. Even ignoring minor differences in <a href="Syntax_(programming_languages)" title="Syntax (programming languages)">syntax</a>, there are many differences in how these statements work and the level of expressiveness they support. Generally, for-loops fall into one of four categories:
</p>
<div class="mw-heading mw-heading3"><h3 id="Traditional_for-loops">Traditional for-loops</h3></div>
<p>The for-loop of languages like <a href="ALGOL" title="ALGOL">ALGOL</a>, <a href="Simula" title="Simula">Simula</a>, <a href="BASIC" title="BASIC">BASIC</a>, <a href="Pascal_(programming_language)" title="Pascal (programming language)">Pascal</a>, <a href="Modula" title="Modula">Modula</a>, <a href="Oberon_(programming_language)" title="Oberon (programming language)">Oberon</a>, <a href="Ada_(programming_language)" title="Ada (programming language)">Ada</a>, <a href="MATLAB" title="MATLAB">MATLAB</a>, <a href="OCaml" title="OCaml">OCaml</a>, <a href="F_Sharp_(programming_language)" title="F Sharp (programming language)">F#</a>, and so on, requires a <a href="Control_flow" title="Control flow">control variable</a> with start- and end-values, which looks something like this:
</p>
<div class="mw-highlight mw-highlight-lang-pascal mw-content-ltr" dir="ltr"><pre><span class="k">for</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">first</span><span class="w"> </span><span class="k">to</span><span class="w"> </span><span class="n">last</span><span class="w"> </span><span class="k">do</span><span class="w"> </span><span class="n">statement</span>
<span class="cm">(* or just *)</span>
<span class="k">for</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">first</span><span class="o">..</span><span class="n">last</span><span class="w"> </span><span class="k">do</span><span class="w"> </span><span class="n">statement</span>
</pre></div>
<p>Depending on the language, an explicit <a href="Assignment_(computer_science)" title="Assignment (computer science)">assignment</a> sign may be used in place of the <a href="Equal_sign" class="mw-redirect" title="Equal sign">equal sign</a> (and some languages require the word <code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">int</code> even in the numerical case). An optional step-value (an increment or decrement ≠ 1) may also be included, although the exact syntaxes used for this differ a bit more between the languages. Some languages require a separate declaration of the control variable, some do not.
</p><p>Another form was popularized by the <a href="C_(programming_language)" title="C (programming language)">C language</a>. It requires 3 parts: the <a href="Declaration_(computer_programming)" title="Declaration (computer programming)">initialization</a> (<a href="Loop_variant" title="Loop variant">loop variant</a>), the <a href="Boolean_algebra" title="Boolean algebra">condition</a>, and the advancement to the next iteration. All these three parts are optional. This type of "semicolon loops" came from <a href="B_(programming_language)" title="B (programming language)">B programming language</a> and it was originally invented by <a href="Stephen_C._Johnson" title="Stephen C. Johnson">Stephen Johnson</a>.<sup id="cite_ref-ken_2-0" class="reference"><a href="#cite_note-ken-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup>
</p><p>In the initialization part, any variables needed are declared (and usually assigned values). If multiple variables are declared, they should all be the same type. The condition part checks a certain condition and exits the loop if false, even if the loop is never executed. If the condition is true, then the lines of code inside the loop are executed. The advancement to the next iteration part is performed exactly once every time the loop ends. The loop is then repeated if the condition evaluates to true.
</p><p>Here is an example of the C-style traditional for-loop in <a href="Java_(programming_language)" title="Java (programming language)">Java</a>.
</p>
<div class="mw-highlight mw-highlight-lang-java mw-content-ltr" dir="ltr"><pre><span class="c1">// Prints the numbers from 0 to 99 (and not 100), each followed by a space.</span>

<span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="o">=</span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">&lt;</span><span class="mi">100</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span>
<span class="p">{</span>
<span class="w"> </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">print</span><span class="p">(</span><span class="n">i</span><span class="p">);</span>
<span class="w"> </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">print</span><span class="p">(</span><span class="sc">' '</span><span class="p">);</span>
<span class="p">}</span>
<span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">();</span>
</pre></div>
<p>These loops are also sometimes named <i>numeric for-loops</i> when contrasted with foreach loops (see below).
</p>
<div class="mw-heading mw-heading3"><h3 id="Iterator-based_for-loops">Iterator-based for-loops</h3></div>
<style data-mw-deduplicate="TemplateStyles:r1236090951">
/* start https://en.wikipedia.org/ */


.mw-parser-output .hatnote{font-style:italic}.mw-parser-output div.hatnote{padding-left:1.6em;margin-bottom:0.5em}.mw-parser-output .hatnote i{font-style:normal}.mw-parser-output .hatnote+link+.hatnote{margin-top:-0.5em}@media print{body.ns-0 .mw-parser-output .hatnote{display:none!important}}


/* end https://en.wikipedia.org/ */
</style><div role="note" class="hatnote navigation-not-searchable">Further information: <a href="Foreach_loop" title="Foreach loop">Foreach loop</a></div>
<p>This type of for-loop is a generalization of the numeric range type of for-loop, as it allows for the enumeration of sets of items other than number sequences. It is usually characterized by the use of an implicit or explicit <a href="Iterator" title="Iterator">iterator</a>, in which the loop variable takes on each of the values in a sequence or other data collection. A representative example in <a href="Python_(programming_language)" title="Python (programming language)">Python</a> is:
</p>
<div class="mw-highlight mw-highlight-lang-python mw-content-ltr" dir="ltr"><pre><span class="k">for</span> <span class="n">an</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">some_iterable_object</span><span class="p">:</span>
<span class="n">do_something</span><span class="p">()</span>
<span class="n">do_something_else</span><span class="p">()</span>
</pre></div>
<p>Where <code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">some_iterable_object</code> is either a data collection that supports implicit iteration (like a list of employee's names), or may be an iterator itself. Some languages have this in addition to another for-loop syntax; notably, PHP has this type of loop under the name <code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">for each</code>, as well as a three-expression for-loop (see below) under the name <code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">for</code>.
</p>
<div class="mw-heading mw-heading3"><h3 id="Vectorised_for-loops">Vectorised for-loops</h3></div>
<p>Some languages offer a for-loop that acts as if processing all iterations <a href="Automatic_vectorization" title="Automatic vectorization">in parallel</a>, such as the <code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">for all</code> keyword in <a href="Fortran_95" class="mw-redirect" title="Fortran 95">Fortran 95</a> which has the interpretation that <i>all</i> <a href="Sides_of_an_equation" title="Sides of an equation">right-hand-side</a> expressions are evaluated before <i>any</i> assignments are made, as distinct from the explicit iteration form. For example, in the <code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">for</code> statement in the following <a href="Pseudocode" title="Pseudocode">pseudocode</a> fragment, when calculating the new value for <code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">A(i)</code>, except for the first (with <code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">i = 2</code>) the reference to <code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">A(i - 1)</code> will obtain the new value that had been placed there in the previous step. In the <code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">for all</code> version, however, each calculation refers only to the original, unaltered <code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">A</code>.
</p>
<pre><b>for</b> i&nbsp;:= 2&nbsp;: N - 1 <b>do</b> A(i)&nbsp;:= [A(i - 1) + A(i) + A(i + 1)] / 3; <b>next</b> i;
<b>for all</b> i&nbsp;:= 2&nbsp;: N - 1 <b>do</b> A(i)&nbsp;:= [A(i - 1) + A(i) + A(i + 1)] / 3;
</pre>
<p>The difference may be significant.
</p><p>Some languages (such as PL/I, Fortran 95) also offer array assignment statements, that enable many for-loops to be omitted. Thus pseudocode such as <code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">A:= 0;</code> would set all elements of array A to zero, no matter its size or dimensionality. The example loop could be rendered as
</p>
<div class="mw-highlight mw-highlight-lang-fortran mw-content-ltr" dir="ltr"><pre><span class="w"> </span><span class="n">A</span><span class="p">(</span><span class="mi">2</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">N</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="p">:</span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="n">A</span><span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">N</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">A</span><span class="p">(</span><span class="mi">2</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">N</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">A</span><span class="p">(</span><span class="mi">3</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">N</span><span class="p">)]</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mi">3</span><span class="p">;</span>
</pre></div>
<p>But whether that would be rendered in the style of the for-loop or the for-all-loop or something else may not be clearly described in the compiler manual.
</p>
<div class="mw-heading mw-heading3"><h3 id="Compound_for-loops">Compound for-loops</h3></div>
<p>Introduced with <a href="ALGOL_68" title="ALGOL 68">ALGOL 68</a> and followed by PL/I, this allows the iteration of a loop to be compounded with a test, as in
</p>
<pre>for i&nbsp;:= 1&nbsp;: N while A(i) &gt; 0 do <i>etc.</i>
</pre>
<p>That is, a value is assigned to the loop variable <i>i</i> and only if the <i>while expression</i> is <b>true</b> will the loop body be executed. If the result were <b>false</b> the for-loop's execution stops short. Granted that the loop variable's value <i>is</i> defined after the termination of the loop, then the above statement will find the first non-positive element in array <i>A</i> (and if no such, its value will be <i>N + 1</i>), or, with suitable variations, the first non-blank character in a string, and so on.
</p>
<div class="mw-heading mw-heading2"><h2 id="Loop_counters">Loop counters</h2></div>
<p>In <a href="Computer_programming" title="Computer programming">computer programming</a>, a <b> loop counter</b> is a control variable that controls the iterations of a loop (a computer <a href="Programming_language" title="Programming language">programming language</a> construct). It is so named because most uses of this construct result in the variable taking on a range of integer values in some orderly sequences (for example., starting at 0 and ending at 10 in increments of 1)
</p><p>Loop counters change with each iteration of a loop, providing a unique value for each iteration. The loop counter is used to decide when the loop should terminate and for the program flow to continue to the next <a href="Instruction_(computer_science)" class="mw-redirect" title="Instruction (computer science)">instruction</a> after the loop.
</p><p>A common <a href="Identifier_naming_convention" class="mw-redirect" title="Identifier naming convention">identifier naming convention</a> is for the loop counter to use the variable names <b>i</b>, <b>j</b>, and <b>k</b> (and so on if needed), where <b>i</b> would be the most outer loop, <b>j</b> the next inner loop, etc. The reverse order is also used by some programmers. This style is generally agreed to have originated from the early programming of Fortran, where these variable names beginning with these letters were implicitly declared as having an integer type, and so were obvious choices for loop counters that were only temporarily required. The practice dates back further to <a href="Mathematical_notation" title="Mathematical notation">mathematical notation</a> where <a href="Index_notation" title="Index notation">indices</a> for <a href="Summation" title="Summation">sums</a> and <a href="Multiplication" title="Multiplication">multiplications</a> are often <b>i</b>, <b>j</b>, etc. A variant convention is the use of duplicated letters for the index, <b>ii</b>, <b>jj</b>, and <b> kk</b>, as this allows easier searching and search-replacing than using a single letter.<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading3"><h3 id="Example">Example</h3></div>
<p>An example of C code involving nested for loops, where the loop counter variables are <b>i</b> and <b>j</b>:
</p>
<div class="mw-highlight mw-highlight-lang-c mw-content-ltr" dir="ltr"><pre><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mi">100</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">j</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">i</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mi">10</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">some_function</span><span class="p">(</span><span class="n">i</span><span class="p">,</span><span class="w"> </span><span class="n">j</span><span class="p">);</span>
<span class="w"> </span><span class="p">}</span>
<span class="p">}</span>
</pre></div>
<p>Loops in C can also be used to print the reverse of a word. As:
</p>
<div class="mw-highlight mw-highlight-lang-c mw-content-ltr" dir="ltr"><pre><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mi">6</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">scanf</span><span class="p">(</span><span class="s">"%c"</span><span class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span class="n">a</span><span class="p">[</span><span class="n">i</span><span class="p">]);</span>
<span class="p">}</span>
<span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">4</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">--</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">printf</span><span class="p">(</span><span class="s">"%c"</span><span class="p">,</span><span class="w"> </span><span class="n">a</span><span class="p">[</span><span class="n">i</span><span class="p">]);</span>
<span class="p">}</span>
</pre></div>
<p>Here, if the input is <code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">apple</code>, the output will be <code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">elppa</code>.
</p>
<div class="mw-heading mw-heading2"><h2 id="Additional_semantics_and_constructs">Additional semantics and constructs</h2></div>
<div class="mw-heading mw-heading3"><h3 id="Use_as_infinite_loops">Use as infinite loops</h3></div>
<div role="note" class="hatnote navigation-not-searchable">Further information: <a href="Infinite_loop" title="Infinite loop">Infinite loop</a></div>
<p>This C-style for-loop is commonly the source of an <a href="Infinite_loop" title="Infinite loop">infinite loop</a> since the fundamental steps of iteration are completely in the control of the programmer. When infinite loops are intended, this type of for-loop can be used (with empty expressions), such as:
</p>
<div class="mw-highlight mw-highlight-lang-c mw-content-ltr" dir="ltr"><pre><span class="k">for</span><span class="w"> </span><span class="p">(;;)</span>
<span class="w"> </span><span class="c1">//loop body</span>
</pre></div>
<p>This style is used instead of infinite <code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">while (1)</code> loops to avoid a <a href="Type_conversion" title="Type conversion">type conversion</a> warning in some C/C++ compilers.<sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup> Some programmers prefer the more succinct <code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">for (;;)</code> form over the semantically equivalent but more verbose <code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">while (true)</code> form.
</p>
<div class="mw-heading mw-heading3"><h3 id="Early_exit_and_continuation">Early exit and continuation</h3></div>
<p>Some languages may also provide other supporting statements, which when present can alter how the for-loop iteration proceeds. Common among these are the <a href="Break_statement" class="mw-redirect" title="Break statement">break</a> and <a href="Control_flow#Continuation_with_next_iteration" title="Control flow">continue</a> statements found in C and its derivatives. The break statement causes the innermost loop to be terminated immediately when executed. The continue statement will move at once to the next iteration without further progress through the loop body for the current iteration. A for statement also terminates when a break, goto, or <a href="Return_statement" title="Return statement">return statement</a> within the statement body is executed.[Wells] Other languages may have similar statements or otherwise provide means to alter the for-loop progress; for example in Fortran 90:
</p>
<div class="mw-highlight mw-highlight-lang-fortran mw-content-ltr" dir="ltr"><pre><span class="k">DO </span><span class="n">I</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">N</span>
<span class="w"> </span><span class="n">statements</span><span class="c">!Executed for all values of "I", up to a disaster if any.</span>
<span class="w"> </span><span class="k">IF</span><span class="w"> </span><span class="p">(</span><span class="n">no</span><span class="w"> </span><span class="n">good</span><span class="p">)</span><span class="w"> </span><span class="k">CYCLE</span><span class="c">! Skip this value of "I", and continue with the next.</span>
<span class="w"> </span><span class="n">Statements</span><span class="c">!Executed only where goodness prevails.</span>
<span class="w"> </span><span class="k">IF</span><span class="w"> </span><span class="p">(</span><span class="n">disaster</span><span class="p">)</span><span class="w"> </span><span class="k">EXIT</span><span class="c">! Abandon the loop.</span>
<span class="w"> </span><span class="n">Statements</span><span class="c">!While good and, no disaster.</span>
<span class="k">END DO</span><span class="c">! Should align with the "DO".</span>
</pre></div>
<p>Some languages offer further facilities such as naming the various loop constructs so that with multiple nested loops there is no doubt as to which loop is involved. Fortran 90, for example:
</p>
<div class="mw-highlight mw-highlight-lang-fortran mw-content-ltr" dir="ltr"><pre><span class="n">X1</span><span class="p">:</span><span class="k">DO </span><span class="n">I</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">N</span>
<span class="w"> </span><span class="n">statements</span>
<span class="w"> </span><span class="n">X2</span><span class="p">:</span><span class="k">DO </span><span class="n">J</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">M</span>
<span class="w"> </span><span class="n">statements</span>
<span class="w"> </span><span class="k">IF</span><span class="w"> </span><span class="p">(</span><span class="n">trouble</span><span class="p">)</span><span class="w"> </span><span class="k">CYCLE </span><span class="n">X1</span>
<span class="w"> </span><span class="n">statements</span>
<span class="w"> </span><span class="k">END DO </span><span class="n">X2</span>
<span class="w"> </span><span class="n">statements</span>
<span class="w"> </span><span class="k">END DO </span><span class="n">X1</span>
</pre></div>
<p>Thus, when "trouble" is detected in the inner loop, the CYCLE X1 (not X2) means that the skip will be to the next iteration for I, <i>not</i> J. The compiler will also be checking that each END DO has the appropriate label for its position: this is not just a documentation aid. The programmer must still code the problem correctly, but some possible blunders will be blocked.
</p>
<div class="mw-heading mw-heading3"><h3 id="Loop_variable_scope_and_semantics">Loop variable scope and semantics</h3></div>
<p>Different languages specify different rules for what value the loop variable will hold on termination of its loop, and indeed some hold that it "becomes undefined". This permits a <a href="Compiler" title="Compiler">compiler</a> to generate code that leaves any value in the loop variable, or perhaps even leaves it unchanged because the loop value was held in a register and never stored in memory. Actual behavior may even vary according to the compiler's optimization settings, as with the Honeywell Fortran66 compiler.
</p><p>In some languages (not <a href="C_(programming_language)" title="C (programming language)">C</a> or <a href="C%2B%2B" title="C++">C++</a>) the loop variable is <a href="Immutable_object" title="Immutable object">immutable</a> within the scope of the loop body, with any attempt to modify its value being regarded as a semantic error. Such modifications are sometimes a consequence of a programmer error, which can be very difficult to identify once made. However, only overt changes are likely to be detected by the compiler. Situations, where the address of the loop variable is passed as an argument to a <a href="Subroutine" class="mw-redirect" title="Subroutine">subroutine</a>, make it very difficult to check because the routine's behavior is in general unknowable to the compiler unless the language supports procedure signatures and argument intents. Some examples in the style of pre-Fortran-90:
</p>
<div class="mw-highlight mw-highlight-lang-fortran mw-content-ltr" dir="ltr"><pre><span class="k">DO </span><span class="n">I</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">N</span>
<span class="w"> </span><span class="n">I</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">7</span><span class="w"> </span><span class="c">!Overt adjustment of the loop variable. Compiler should complain</span>
<span class="w"> </span><span class="n">Z</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ADJUST</span><span class="p">(</span><span class="n">I</span><span class="p">)</span><span class="w"> </span><span class="c">!Function "ADJUST" might alter "I", to uncertain effect.</span>
<span class="w"> </span><span class="k">PRINT</span><span class="w"> </span><span class="o">*</span><span class="p">,</span><span class="w"> </span><span class="p">(</span><span class="n">A</span><span class="p">(</span><span class="n">I</span><span class="p">),</span><span class="w"> </span><span class="n">B</span><span class="p">(</span><span class="n">I</span><span class="p">),</span><span class="w"> </span><span class="n">I</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">N</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="w"> </span><span class="c">!Implicit for-loop to print odd elements of arrays A and B, reusing "I"... Compiler should complain.</span>
<span class="w"> </span><span class="k">PRINT</span><span class="w"> </span><span class="o">*</span><span class="p">,</span><span class="w"> </span><span class="n">I</span><span class="w"> </span><span class="c">! What value will be presented?</span>
<span class="k">END DO</span><span class="c">! How many times will the loop be executed?</span>
</pre></div>
<p>A common approach is to calculate the iteration count at the start of a loop (with careful attention to overflow as in <code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">for i:= 0: 65535 do ...&nbsp;;</code> in sixteen-bit integer arithmetic) and with each iteration decrement this count while also adjusting the value of <span class="monospaced">I</span>: double counting results. However, adjustments to the value of <span class="monospaced">I</span> within the loop will not change the number of iterations executed.
</p><p>Still, another possibility is that the code generated may employ an auxiliary variable as the loop variable, possibly held in a machine register, whose value may or may not be copied to <span class="monospaced">I</span> on each iteration. Again, modifications of <span class="monospaced">I</span> would not affect the control of the loop, but now a disjunction is possible: within the loop, references to the value of <span class="monospaced">I</span> might be to the (possibly altered) current value of <span class="monospaced">I</span> or to the auxiliary variable (held safe from improper modification) and confusing results are guaranteed. For instance, within the loop a reference to element <span class="monospaced">I</span> of an array would likely employ the auxiliary variable (especially if it were held in a machine register), but if <span class="monospaced">I</span> is a parameter to some routine (for instance, a <i>print</i>-statement to reveal its value), it would likely be a reference to the proper variable <span class="monospaced">I</span> instead. It is best to avoid such possibilities.
</p>
<div class="mw-heading mw-heading4"><h4 id="Adjustment_of_bounds">Adjustment of bounds</h4></div>
<p>Just as the index variable might be modified within a for-loop, so also may its bounds and direction. But to uncertain effect. A compiler may prevent such attempts, they may have no effect, or they might even work properly - though many would declare that to do so would be wrong. Consider a statement such as
</p>
<pre><b>for</b> i&nbsp;:= first&nbsp;: last&nbsp;: step <b>do</b>
A(i)&nbsp;:= A(i) / A(last);
</pre>
<p>If the approach to compiling such a loop was to be the evaluation of <span class="monospaced">first</span>, <span class="monospaced">last</span> and <span class="monospaced">step</span> and the calculation of an iteration count via something like <code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">(last - first)/step</code> once only at the start, then if those items were simple variables and their values were somehow adjusted during the iterations, this would have no effect on the iteration count even if the element selected for division by <code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">A(last)</code> changed.
</p>
<div class="mw-heading mw-heading3"><h3 id="List_of_value_ranges">List of value ranges</h3></div>
<p>ALGOL 60, PL/I, and ALGOL 68, allow loops in which the loop variable is iterated over a list of ranges of values instead of a single range. The following PL/I example will execute the loop with six values of i: 1, 7, 12, 13, 14, 15:
</p>
<div class="mw-highlight mw-highlight-lang-rexx mw-content-ltr" dir="ltr"><pre><span class="kr">do</span><span class="w"> </span>i<span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">1</span><span class="o">,</span><span class="w"> </span><span class="m">7</span><span class="o">,</span><span class="w"> </span><span class="m">12</span><span class="w"> </span><span class="kr">to</span><span class="w"> </span><span class="m">15</span><span class="err">;</span>
<span class="w"> </span><span class="cm">/*statements*/</span>
<span class="kr">end</span><span class="err">;</span>
</pre></div>
<div class="mw-heading mw-heading2"><h2 id="Equivalence_with_while-loops">Equivalence with while-loops</h2></div>
<p>A for-loop is generally equivalent to a while-loop:
</p>
<pre>factorial&nbsp;:= 1
for counter from 2 to 5
factorial&nbsp;:= factorial * counter
counter:= counter - 1
print counter + "! equals " + factorial
</pre>
<p>Is equivalent to:
</p>
<pre>factorial&nbsp;:= 1
counter&nbsp;:= 1
while counter &lt; 5
counter&nbsp;:= counter + 1
factorial&nbsp;:= factorial * counter
print counter + "! equals " + factorial
</pre>
<p>As demonstrated by the output of the variables.
</p>
<div class="mw-heading mw-heading2"><h2 id="Timeline_of_the_for-loop_syntax_in_various_programming_languages">Timeline of the <i>for-loop</i> syntax in various programming languages</h2></div>
<p>Given an action that must be repeated, for instance, five times, different languages' for-loops will be written differently. The syntax for a three-expression for-loop is nearly identical in all languages that have it, after accounting for different styles of block termination and so on.
</p>
<div class="mw-heading mw-heading3"><h3 id="1957:_FORTRAN">1957: FORTRAN</h3></div>
<div role="note" class="hatnote navigation-not-searchable">Further information: <a href="Fortran" title="Fortran">Fortran</a></div>
<p>Fortran's equivalent of the <span class="monospaced">for</span> loop is the <span class="monospaced">DO</span> loop,
using the keyword do instead of for,
The syntax of Fortran's <span class="monospaced">DO</span> loop is:
</p>
<div class="mw-highlight mw-highlight-lang-fortranfixed mw-content-ltr" dir="ltr"><pre><span class="nl"> </span> <span class="w"> </span><span class="k">DO </span><span class="n">label</span><span class="w"> </span><span class="n">counter</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">first</span><span class="p">,</span><span class="w"> </span><span class="n">last</span><span class="p">,</span><span class="w"> </span><span class="n">step</span>
<span class="nl"> </span> <span class="w"> </span><span class="n">statements</span>
<span class="nl">label</span> <span class="w"> </span><span class="n">statement</span>
</pre></div>
<p>The following two examples behave equivalently to the three argument for-loop in other languages,
initializing the counter variable to 1, incrementing by 1 each iteration of the loop, and stopping at five (inclusive).
</p>
<div class="mw-highlight mw-highlight-lang-fortranfixed mw-content-ltr" dir="ltr"><pre><span class="nl"> </span> <span class="w"> </span><span class="k">DO </span><span class="mi">9</span><span class="p">,</span><span class="w"> </span><span class="n">ICOUNT</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span>
<span class="nl"> </span> <span class="w"> </span><span class="k">WRITE</span><span class="w"> </span><span class="p">(</span><span class="mi">6</span><span class="p">,</span><span class="mi">8</span><span class="p">)</span><span class="w"> </span><span class="n">ICOUNT</span>
<span class="nl"> 8</span> <span class="w"> </span><span class="k">FORMAT</span><span class="p">(</span><span class="w"> </span><span class="n">I2</span><span class="w"> </span><span class="p">)</span>
<span class="nl"> 9</span> <span class="w"> </span><span class="k">CONTINUE</span>
</pre></div>
<p>As of Fortran 90, block structured <span class="monospaced">END DO</span> was added to the language. With this, the end of loop label became optional:
</p>
<div class="mw-highlight mw-highlight-lang-fortran mw-content-ltr" dir="ltr"><pre><span class="k">do </span><span class="n">icounter</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span>
<span class="w"> </span><span class="k">write</span><span class="p">(</span><span class="o">*</span><span class="p">,</span><span class="w"> </span><span class="s1">'(i2)'</span><span class="p">)</span><span class="w"> </span><span class="n">icounter</span>
<span class="k">end do</span>
</pre></div>
<p>The step part may be omitted if the step is one. Example:
</p>
<div class="mw-highlight mw-highlight-lang-fortranfixed mw-content-ltr" dir="ltr"><pre><span class="c">* DO loop example.</span>
<span class="nl"> </span> <span class="w"> </span><span class="k">PROGRAM </span><span class="n">MAIN</span>
<span class="nl"> </span> <span class="w"> </span><span class="kt">INTEGER </span><span class="n">SUMSQ</span>
<span class="nl"> </span> <span class="w"> </span><span class="n">SUMSQ</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span>
<span class="nl"> </span> <span class="w"> </span><span class="k">DO </span><span class="mi">199</span><span class="w"> </span><span class="n">I</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">9999999</span>
<span class="nl"> </span> <span class="w"> </span><span class="k">IF</span><span class="w"> </span><span class="p">(</span><span class="n">SUMSQ</span><span class="p">.</span><span class="n">GT</span><span class="p">.</span><span class="mi">1000</span><span class="p">)</span><span class="w"> </span><span class="k">GO</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="mi">200</span>
<span class="nl">199 </span> <span class="w"> </span><span class="n">SUMSQ</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">SUMSQ</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">I</span><span class="o">**</span><span class="mi">2</span>
<span class="nl">200 </span> <span class="w"> </span><span class="k">PRINT </span><span class="mi">206</span><span class="p">,</span><span class="w"> </span><span class="n">SUMSQ</span>
<span class="nl">206 </span> <span class="w"> </span><span class="k">FORMAT</span><span class="p">(</span><span class="w"> </span><span class="n">I2</span><span class="w"> </span><span class="p">)</span>
<span class="nl"> </span> <span class="w"> </span><span class="k">END</span>
</pre></div>
<p>In Fortran 90, the <span class="monospaced">GO TO</span> may be avoided by using an <span class="monospaced">EXIT</span> statement.
</p>
<div class="mw-highlight mw-highlight-lang-fortranfixed mw-content-ltr" dir="ltr"><pre><span class="c">* DO loop example.</span>
<span class="nl"> </span> <span class="w"> </span><span class="k">program </span><span class="n">main</span>
<span class="nl"> </span> <span class="w"> </span><span class="k">implicit none</span>

<span class="nl"> </span> <span class="w"> </span><span class="kt">integer</span><span class="kd">::</span><span class="w"> </span><span class="n">sumsq</span>
<span class="nl"> </span> <span class="w"> </span><span class="kt">integer</span><span class="kd">::</span><span class="w"> </span><span class="n">i</span>

<span class="nl"> </span> <span class="w"> </span><span class="n">sumsq</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span>
<span class="nl"> </span> <span class="w"> </span><span class="k">do </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">9999999</span>
<span class="nl"> </span> <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">sumsq</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="mi">1000</span><span class="p">)</span><span class="w"> </span><span class="k">exit</span>
<span class="nl"> </span> <span class="w"> </span><span class="n">sumsq</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sumsq</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">i</span><span class="o">**</span><span class="mi">2</span>
<span class="nl"> </span> <span class="w"> </span><span class="k">end do</span>
<span class="nl"> </span> <span class="w"> </span><span class="k">print</span><span class="w"> </span><span class="o">*</span><span class="p">,</span><span class="w"> </span><span class="n">sumsq</span>

<span class="nl"> </span> <span class="w"> </span><span class="k">end program</span>
</pre></div>
<p>Alternatively, a <span class="monospaced">DO - WHILE</span> construct could be used:
</p>
<div class="mw-highlight mw-highlight-lang-fortranfixed mw-content-ltr" dir="ltr"><pre><span class="nl"> </span> <span class="w"> </span><span class="k">program </span><span class="n">main</span>
<span class="nl"> </span> <span class="w"> </span><span class="k">implicit none</span>

<span class="nl"> </span> <span class="w"> </span><span class="kt">integer</span><span class="kd">::</span><span class="w"> </span><span class="n">sumsq</span>
<span class="nl"> </span> <span class="w"> </span><span class="kt">integer</span><span class="kd">::</span><span class="w"> </span><span class="n">i</span>

<span class="nl"> </span> <span class="w"> </span><span class="n">sumsq</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span>
<span class="nl"> </span> <span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span>
<span class="nl"> </span> <span class="w"> </span><span class="k">do while</span><span class="w"> </span><span class="p">(</span><span class="n">sumsq</span><span class="w"> </span><span class="o">&lt;=</span><span class="w"> </span><span class="mi">1000</span><span class="p">)</span>
<span class="nl"> </span> <span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">i</span><span class="o">+</span><span class="mi">1</span>
<span class="nl"> </span> <span class="w"> </span><span class="n">sumsq</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sumsq</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">i</span><span class="o">**</span><span class="mi">2</span>
<span class="nl"> </span> <span class="w"> </span><span class="k">end do</span>
<span class="nl"> </span> <span class="w"> </span><span class="k">print</span><span class="w"> </span><span class="o">*</span><span class="p">,</span><span class="w"> </span><span class="n">sumsq</span>

<span class="nl"> </span> <span class="w"> </span><span class="k">end program</span>
</pre></div>
<div class="mw-heading mw-heading3"><h3 id="1958:_ALGOL">1958: ALGOL</h3></div>
<div role="note" class="hatnote navigation-not-searchable">Further information: <a href="ALGOL_58" title="ALGOL 58">ALGOL 58</a></div>
<p>ALGOL 58 introduced the <code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">for</code> statement, using the form as Superplan:
</p>
<pre> FOR <i>Identifier</i> = <i>Base</i> (<i>Difference</i>) <i>Limit</i>
</pre>
<p>For example to print 0 to 10 incremented by 1:
</p>
<pre>FOR x = 0 (1) 10 BEGIN
PRINT (FL) = x END
</pre>
<div class="mw-heading mw-heading3"><h3 id="1960:_COBOL">1960: COBOL</h3></div>
<div role="note" class="hatnote navigation-not-searchable">Further information: <a href="COBOL" title="COBOL">COBOL</a></div>
<p><a href="COBOL" title="COBOL">COBOL</a> was formalized in late 1959 and has had many elaborations. It uses the PERFORM verb which has many options. Originally all loops had to be out-of-line with the iterated code occupying a separate paragraph. Ignoring the need for declaring and initializing variables, the COBOL equivalent of a <i>for</i>-loop would be.
</p>
<div class="mw-highlight mw-highlight-lang-cobol mw-content-ltr" dir="ltr"><pre><span class="c"> </span><span class="kr">PERFORM</span><span class="w"> </span><span class="nv">SQ-ROUTINE</span><span class="w"> </span><span class="kp">VARYING</span><span class="w"> </span><span class="nv">I</span><span class="w"> </span><span class="kp">FROM</span><span class="w"> </span><span class="mi">1 </span><span class="kp">BY</span><span class="w"> </span><span class="mi">1 </span><span class="kp">UNTIL</span><span class="w"> </span><span class="nv">I</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="mi">1000</span>

<span class="mi"> </span><span class="nv">SQ-ROUTINE</span>
<span class="c"> </span><span class="w"> </span><span class="kr">ADD</span><span class="w"> </span><span class="nv">I</span><span class="o">**</span><span class="mi">2 </span><span class="kp">TO</span><span class="w"> </span><span class="nv">SUM-SQ</span><span class="p">.</span>
</pre></div>
<p>In the 1980s, the addition of in-line loops and <i><a href="Structured_programming" title="Structured programming">structured programming</a></i> statements such as END-PERFORM resulted in a <i>for</i>-loop with a more familiar structure.
</p>
<div class="mw-highlight mw-highlight-lang-cobol mw-content-ltr" dir="ltr"><pre><span class="c"> </span><span class="kr">PERFORM</span><span class="w"> </span><span class="kp">VARYING</span><span class="w"> </span><span class="nv">I</span><span class="w"> </span><span class="kp">FROM</span><span class="w"> </span><span class="mi">1 </span><span class="kp">BY</span><span class="w"> </span><span class="mi">1 </span><span class="kp">UNTIL</span><span class="w"> </span><span class="nv">I</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="mi">1000</span>
<span class="mi"> </span><span class="kr">ADD</span><span class="w"> </span><span class="nv">I</span><span class="o">**</span><span class="mi">2 </span><span class="kp">TO</span><span class="w"> </span><span class="nv">SUM-SQ</span><span class="p">.</span>
<span class="c"> </span><span class="kr">END-PERFORM</span>
</pre></div>
<p>If the PERFORM verb has the optional clause TEST AFTER, the resulting loop is slightly different: the loop body is executed at least once, before any test.
</p>
<div class="mw-heading mw-heading3"><h3 id="1964:_BASIC">1964: BASIC</h3></div>
<div role="note" class="hatnote navigation-not-searchable">Further information: <a href="BASIC" title="BASIC">BASIC</a></div>
<p>In <a href="BASIC" title="BASIC">BASIC</a>, a loop is sometimes named a <i>for-next loop</i>.
</p>
<div class="mw-highlight mw-highlight-lang-basic mw-content-ltr" dir="ltr"><pre><span class="nl">10</span><span class="w"> </span><span class="c1">REM THIS FOR LOOP PRINTS ODD NUMBERS FROM 1 TO 15</span>
<span class="nl">20</span><span class="w"> </span><span class="kr">FOR</span><span class="w"> </span><span class="vg">I</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="il">1</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="il">15</span><span class="w"> </span><span class="k">STEP</span><span class="w"> </span><span class="il">2</span>
<span class="nl">30</span><span class="w"> </span><span class="kr">PRINT</span><span class="w"> </span><span class="vg">I</span>
<span class="nl">40</span><span class="w"> </span><span class="kr">NEXT</span><span class="w"> </span><span class="vg">I</span>
</pre></div>
<p>The end-loop marker specifies the name of the index variable, which must correspond to the name of the index variable at the start of the for-loop. Some languages (PL/I, Fortran 95, and later) allow a statement label at the start of a for-loop that can be matched by the compiler against the same text on the corresponding end-loop statement. Fortran also allows the <code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">EXIT</code> and <code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">CYCLE</code> statements to name this text; in a nest of loops, this makes clear which loop is intended. However, in these languages, the labels must be unique, so successive loops involving the same index variable cannot use the same text nor can a label be the same as the name of a variable, such as the index variable for the loop.
</p>
<div class="mw-heading mw-heading3"><h3 id="1964:_PL/I">1964: PL/I</h3></div>
<div role="note" class="hatnote navigation-not-searchable">Further information: <a href="PL/I" title="PL/I">PL/I</a></div>
<div class="mw-highlight mw-highlight-lang-rexx mw-content-ltr" dir="ltr"><pre><span class="kr">do</span><span class="w"> </span>counter<span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">1</span><span class="w"> </span><span class="kr">to</span><span class="w"> </span><span class="m">5</span><span class="w"> </span><span class="kr">by</span><span class="w"> </span><span class="m">1</span><span class="err">;</span><span class="w"> </span><span class="cm">/* "by 1" is the default if not specified */</span>
<span class="w"> </span><span class="cm">/*statements*/</span><span class="err">;</span>
<span class="w"> </span><span class="kr">end</span><span class="err">;</span>
</pre></div>
<p>The <span class="monospaced">LEAVE</span> statement may be used to exit the loop. Loops can be <a href="Label_(computer_science)" title="Label (computer science)">labeled</a>, and <i>leave</i> may leave a specific labeled loop in a group of nested loops. Some PL/I dialects include the <span class="monospaced">ITERATE</span> statement to terminate the current loop iteration and begin the next.
</p>
<div class="mw-heading mw-heading3"><h3 id="1968:_ALGOL_68">1968: ALGOL 68</h3></div>
<div role="note" class="hatnote navigation-not-searchable">Further information: <a href="ALGOL_68" title="ALGOL 68">ALGOL 68</a></div>
<p>ALGOL 68 has what was considered <i>the</i> universal loop, the full syntax is:
</p>
<pre>FOR i FROM 1 BY 2 TO 3 WHILE i≠4 DO ~ OD
</pre>
<p>Further, the single iteration range could be replaced by a list of such ranges. There are several unusual aspects of the construct
</p>
<ul><li>only the <code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">do ~ od</code> portion was compulsory, in which case the loop will iterate indefinitely.</li>
<li>thus the clause <code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">to 100 do ~ od</code>, will iterate exactly 100 times.</li>
<li>The <code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">while</code> <i>syntactic element</i> allowed a programmer to break from a <code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">for</code> loop early, as in:</li></ul>
<pre>INT sum sq&nbsp;:= 0;
FOR i
WHILE
print(("So far:", i, new line)); # Interposed for tracing purposes. #
sum sq ≠ 70↑2 # This is the test for the WHILE #
DO
sum sq +:= i↑2
OD
</pre>
<p>Subsequent <i>extensions</i> to the standard ALGOL 68 allowed the <code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">to</code> syntactic element to be replaced with <code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">upto</code> and <code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">downto</code> to achieve a small optimization. The same compilers also incorporated:
</p>
<dl><dt><code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">until</code></dt>
<dd>for late loop termination.</dd>
<dt><code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">foreach</code></dt>
<dd>for working on arrays in <a href="Parallel_computing" title="Parallel computing">parallel</a>.</dd></dl>
<div class="mw-heading mw-heading3"><h3 id="1970:_Pascal">1970: Pascal</h3></div>
<div role="note" class="hatnote navigation-not-searchable">Further information: <a href="Pascal_(programming_language)" title="Pascal (programming language)">Pascal (programming language)</a></div>
<div class="mw-highlight mw-highlight-lang-pascal mw-content-ltr" dir="ltr"><pre><span class="k">for</span><span class="w"> </span><span class="n">Counter</span><span class="o">:=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="k">to</span><span class="w"> </span><span class="mi">5</span><span class="w"> </span><span class="k">do</span>
<span class="w"> </span><span class="cm">(*statement*)</span><span class="o">;</span>
</pre></div>
<p>Decrementing (counting backwards) is using <code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">downto</code> keyword instead of <code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">to</code>, as in:
</p>
<div class="mw-highlight mw-highlight-lang-pascal mw-content-ltr" dir="ltr"><pre><span class="k">for</span><span class="w"> </span><span class="n">Counter</span><span class="o">:=</span><span class="w"> </span><span class="mi">5</span><span class="w"> </span><span class="n">down</span><span class="w"> </span><span class="k">to</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="k">do</span>
<span class="w"> </span><span class="cm">(*statement*)</span><span class="o">;</span>
</pre></div>
<p>The numeric range for-loop varies somewhat more.
</p>
<div class="mw-heading mw-heading3"><h3 id="1972:_C,_C++">1972: C, C++</h3></div>
<div role="note" class="hatnote navigation-not-searchable">Further information: <a href="C_(programming_language)" title="C (programming language)">C (programming language)</a>, <a href="C%2B%2B" title="C++">C++</a>, and <a href="C_syntax#Iteration_statements" title="C syntax">C syntax §&nbsp;Iteration statements</a></div>
<div class="mw-highlight mw-highlight-lang-c mw-content-ltr" dir="ltr"><pre><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">initialization</span><span class="p">;</span><span class="w"> </span><span class="n">condition</span><span class="p">;</span><span class="w"> </span><span class="n">increment</span><span class="o">/</span><span class="n">decrement</span><span class="p">)</span>
<span class="w"> </span><span class="n">statement</span>
</pre></div>
<p>The <span class="monospaced">statement</span> is often a block statement; an example of this would be:
</p>
<div class="mw-highlight mw-highlight-lang-c mw-content-ltr" dir="ltr"><pre><span class="c1">//Using for-loops to add numbers 1 - 5</span>
<span class="kt">int</span><span class="w"> </span><span class="n">sum</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
<span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">&lt;=</span><span class="w"> </span><span class="mi">5</span><span class="p">;</span><span class="w"> </span><span class="o">++</span><span class="n">i</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">sum</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="n">i</span><span class="p">;</span>
<span class="p">}</span>
</pre></div>
<p>The ISO/IEC 9899:1999 publication (commonly known as <a href="C99" title="C99">C99</a>) also allows initial declarations in <code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">for</code> loops. All three sections in the for loop are optional, with an empty condition equivalent to true.
</p>
<div class="mw-heading mw-heading3"><h3 id="1972:_Smalltalk">1972: Smalltalk</h3></div>
<div role="note" class="hatnote navigation-not-searchable">Further information: <a href="Smalltalk" title="Smalltalk">Smalltalk</a></div>
<div class="mw-highlight mw-highlight-lang-smalltalk mw-content-ltr" dir="ltr"><pre><span class="m">1</span> <span class="nf">to:</span> <span class="m">5</span> <span class="nf">do:</span> [ <span class="o">:</span><span class="nv">counter</span> <span class="o">|</span> <span class="c">"statements"</span> ]
</pre></div>
<p>Contrary to other languages, in <a href="Smalltalk" title="Smalltalk">Smalltalk</a> a for-loop is not a <a href="Language_construct" title="Language construct">language construct</a> but is defined in the class Number as a method with two parameters, the end value and a <a href="Closure_(computer_science)" class="mw-redirect" title="Closure (computer science)">closure</a>, using self as start value.
</p>
<div class="mw-heading mw-heading3"><h3 id="1980:_Ada">1980: Ada</h3></div>
<div role="note" class="hatnote navigation-not-searchable">Further information: <a href="Ada_(programming_language)" title="Ada (programming language)">Ada (programming language)</a></div>
<div class="mw-highlight mw-highlight-lang-ada mw-content-ltr" dir="ltr"><pre><span class="kr">for</span> <span class="n">Counter</span> <span class="ow">in</span> <span class="mi">1</span> <span class="p">..</span> <span class="mi">5</span> <span class="kr">loop</span>
<span class="c1">-- statements</span>
<span class="kr">end</span> <span class="kr">loop</span><span class="p">;</span>
</pre></div>
<p>The <i>exit</i> statement may be used to exit the loop. Loops can be labeled, and <i>exit</i> may leave a specifically labeled loop in a group of nested loops:
</p>
<div class="mw-highlight mw-highlight-lang-ada mw-content-ltr" dir="ltr"><pre><span class="nl">Counting</span><span class="p">:</span>
<span class="kr">For</span> <span class="n">Counter</span> <span class="ow">in</span> <span class="mi">1</span> <span class="p">..</span> <span class="mi">5</span> <span class="kr">loop</span>
<span class="nl">Triangle</span><span class="p">:</span>
<span class="kr">for</span> <span class="n">Secondary_Index</span> <span class="ow">in</span> <span class="mi">2</span> <span class="p">..</span> <span class="n">Counter</span> <span class="kr">loop</span>
<span class="c1">-- statements</span>
<span class="kr">exit</span> <span class="n">Counting</span><span class="p">;</span>
<span class="c1">-- statements</span>
<span class="kr">end</span> <span class="kr">loop</span> <span class="nf">Triangle</span><span class="p">;</span>
<span class="kr">end</span> <span class="kr">loop</span> <span class="nf">Counting</span><span class="p">;</span>
</pre></div>
<div class="mw-heading mw-heading3"><h3 id="1980:_Maple">1980: Maple</h3></div>
<div role="note" class="hatnote navigation-not-searchable">Further information: <a href="Maple_(software)" title="Maple (software)">Maple (software)</a></div>
<p>Maple has two forms of for-loop, one for iterating over a range of values, and the other for iterating over the contents of a container. The value range form is as follows:
</p>
<pre><b>for</b> <i>i</i> <b>from</b> <i>f</i> <b>by</b> <i>b</i> <b>to</b> <i>t</i> <b>while</b> <i>w</i> <b>do</b>
<i># loop body</i>
<b>od</b>;
</pre>
<p>All parts except <code><b>do</b></code> and <code><b>od</b></code> are optional. The <code><b> for</b> <i>I</i></code> part, if present, must come first. The remaining parts (<code><b>from</b> <i>f</i></code>, <code><b>by</b> <i>b</i></code>, <code><b>to</b> <i>t</i></code>, <code><b>while</b> <i>w</i></code>) can appear in any order.
</p><p>Iterating over a container is done using this form of loop:
</p>
<pre><b>for</b> <i>e</i> <b>in</b> <i>c</i> <b>while</b> <i>w</i> <b>do</b>
<i># loop body</i>
<b>od</b>;
</pre>
<p>The <code><b> in</b> <i>c</i></code> clause specifies the container, which may be a list, set, sum, product, unevaluated function, array, or object implementing an iterator.
</p><p>A for-loop may be terminated by <code><b>od</b></code>, <code><b>end</b></code>, or <code><b>end do</b></code>.
</p>
<div class="mw-heading mw-heading3"><h3 id="1982:_Maxima_CAS">1982: Maxima CAS</h3></div>
<div role="note" class="hatnote navigation-not-searchable">Further information: <a href="Maxima_(software)" title="Maxima (software)">Maxima (software)</a></div>
<p>In Maxima CAS, one can use also integer values:
</p>
<div class="mw-highlight mw-highlight-lang-maxima mw-content-ltr" dir="ltr"><pre><span class="k">for</span><span class="w"> </span><span class="nv">x</span><span class="o">:</span><span class="mf">0.5</span><span class="w"> </span><span class="k">step</span><span class="w"> </span><span class="mf">0.1</span><span class="w"> </span><span class="k">thru</span><span class="w"> </span><span class="mf">0.9</span><span class="w"> </span><span class="k">do</span>
<span class="w"> </span><span class="cm">/* "Do something with x" */</span>
</pre></div>
<div class="mw-heading mw-heading3"><h3 id="1982:_PostScript">1982: PostScript</h3></div>
<div role="note" class="hatnote navigation-not-searchable">Further information: <a href="PostScript" title="PostScript">PostScript</a></div>
<p>The for-loop, written as <code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">[initial] [increment] [limit] { ... } for</code> initializes an internal variable, and executes the body as long as the internal variable is not more than the limit (or not less, if the increment is negative) and, at the end of each iteration, increments the internal variable. Before each iteration, the value of the internal variable is pushed onto the stack.<sup id="cite_ref-5" class="reference"><a href="#cite_note-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-highlight mw-highlight-lang-applescript mw-content-ltr" dir="ltr"><pre><span class="mi">1</span> <span class="mi">1</span> <span class="mi">6</span> <span class="p">{</span><span class="nv">STATEMENTS</span><span class="p">}</span> <span class="nb">for</span>
</pre></div>
<p>There is also a simple repeat loop.
The repeat-loop, written as <code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">X { ... } repeat</code>, repeats the body exactly X times.<sup id="cite_ref-6" class="reference"><a href="#cite_note-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-highlight mw-highlight-lang-applescript mw-content-ltr" dir="ltr"><pre><span class="mi">5</span> <span class="p">{</span> <span class="nv">STATEMENTS</span> <span class="p">}</span> <span class="k">repeat</span>
</pre></div>
<div class="mw-heading mw-heading3"><h3 id="1983:_Ada_83_and_above">1983: Ada 83 and above</h3></div>
<div role="note" class="hatnote navigation-not-searchable">Further information: <a href="Ada_(programming_language)" title="Ada (programming language)">Ada (programming language)</a></div>
<div class="mw-highlight mw-highlight-lang-ada mw-content-ltr" dir="ltr"><pre><span class="kd">procedure</span> <span class="nf">Main</span> <span class="kr">is</span>
<span class="n">Sum_Sq</span> <span class="p">:</span> <span class="kt">Integer</span> <span class="p">:=</span> <span class="mi">0</span><span class="p">;</span>
<span class="kr">begin</span>
<span class="kr">for</span> <span class="n">I</span> <span class="ow">in</span> <span class="mi">1</span> <span class="p">..</span> <span class="mi">9999999</span> <span class="kr">loop</span>
<span class="kr">if</span> <span class="n">Sum_Sq</span> <span class="o">&lt;=</span> <span class="mi">1000</span> <span class="kr">then</span>
<span class="n">Sum_Sq</span> <span class="p">:=</span> <span class="n">Sum_Sq</span> <span class="o">+</span> <span class="n">I</span><span class="o">**</span><span class="mi">2</span>
<span class="kr">end</span> <span class="kr">if</span><span class="p">;</span>
<span class="kr">end</span> <span class="kr">loop</span><span class="p">;</span>
<span class="kr">end</span><span class="p">;</span>
</pre></div>
<div class="mw-heading mw-heading3"><h3 id="1984:_MATLAB">1984: MATLAB</h3></div>
<div role="note" class="hatnote navigation-not-searchable">Further information: <a href="MATLAB" title="MATLAB">MATLAB</a></div>
<div class="mw-highlight mw-highlight-lang-matlab mw-content-ltr" dir="ltr"><pre><span class="k">for</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="mi">1</span><span class="p">:</span><span class="mi">5</span>
<span class="w"> </span><span class="o">--</span><span class="w"> </span><span class="n">statements</span>
<span class="k">end</span>
</pre></div>
<p>After the loop, <code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">n</code> would be 5 in this example.
</p><p>As <code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">i</code> is used for the <a href="Imaginary_unit" title="Imaginary unit">Imaginary unit</a>, its use as a loop variable is discouraged.
</p>
<div class="mw-heading mw-heading3"><h3 id="1987:_Perl">1987: Perl</h3></div>
<div role="note" class="hatnote navigation-not-searchable">Further information: <a href="Perl" title="Perl">Perl</a></div>
<div class="mw-highlight mw-highlight-lang-perl mw-content-ltr" dir="ltr"><pre><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="nv">$counter</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"> </span><span class="nv">$counter</span><span class="w"> </span><span class="o">&lt;=</span><span class="w"> </span><span class="mi">5</span><span class="p">;</span><span class="w"> </span><span class="nv">$counter</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1"># implicitly or predefined variable</span>
<span class="w"> </span><span class="c1"># statements;</span>
<span class="p">}</span>
<span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="k">my</span><span class="w"> </span><span class="nv">$counter</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"> </span><span class="nv">$counter</span><span class="w"> </span><span class="o">&lt;=</span><span class="w"> </span><span class="mi">5</span><span class="p">;</span><span class="w"> </span><span class="nv">$counter</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1"># variable private to the loop</span>
<span class="w"> </span><span class="c1"># statements;</span>
<span class="p">}</span>
<span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="mi">1</span><span class="o">..</span><span class="mi">5</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1"># variable implicitly called $_; 1..5 creates a list of these 5 elements</span>
<span class="w"> </span><span class="c1"># statements;</span>
<span class="p">}</span>
<span class="n">statement</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="mi">1</span><span class="o">..</span><span class="mi">5</span><span class="p">;</span><span class="w"> </span><span class="c1"># almost same (only 1 statement) with natural language order</span>
<span class="k">for</span><span class="w"> </span><span class="k">my</span><span class="w"> </span><span class="nv">$counter</span><span class="w"> </span><span class="p">(</span><span class="mi">1</span><span class="o">..</span><span class="mi">5</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1"># variable private to the loop</span>
<span class="w"> </span><span class="c1"># statements;</span>
<span class="p">}</span>
</pre></div>
<p>"<a href="There's_more_than_one_way_to_do_it" class="mw-redirect" title="There's more than one way to do it">There's more than one way to do it</a>" is a Perl programming motto.
</p>
<div class="mw-heading mw-heading3"><h3 id="1988:_Mathematica">1988: Mathematica</h3></div>
<div role="note" class="hatnote navigation-not-searchable">Further information: <a href="Wolfram_Mathematica" class="mw-redirect" title="Wolfram Mathematica">Wolfram Mathematica</a> and <a href="Wolfram_Language" title="Wolfram Language">Wolfram Language</a></div>
<p>The construct corresponding to most other languages' for-loop is named <i>Do</i> in Mathematica.
</p>
<div class="mw-highlight mw-highlight-lang-ruby mw-content-ltr" dir="ltr"><pre><span class="no">Do</span><span class="o">[</span><span class="n">f</span><span class="o">[</span><span class="n">x</span><span class="o">]</span><span class="p">,</span><span class="w"> </span><span class="p">{</span><span class="n">x</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="o">.</span><span class="mi">1</span><span class="p">}</span><span class="o">]</span>
</pre></div>
<p>Mathematica also has a For construct that mimics the for-loop of C-like languages.
</p>
<div class="mw-highlight mw-highlight-lang-ruby mw-content-ltr" dir="ltr"><pre><span class="no">For</span><span class="o">[</span><span class="n">x</span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="p">,</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="o">&lt;=</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="mi">0</span><span class="o">.</span><span class="mi">1</span><span class="p">,</span>
<span class="w"> </span><span class="n">f</span><span class="o">[</span><span class="n">x</span><span class="o">]</span>
<span class="o">]</span>
</pre></div>
<div class="mw-heading mw-heading3"><h3 id="1989:_Bash">1989: Bash</h3></div>
<div role="note" class="hatnote navigation-not-searchable">Further information: <a href="Bash_(Unix_shell)" title="Bash (Unix shell)">Bash (Unix shell)</a></div>
<div class="mw-highlight mw-highlight-lang-bash mw-content-ltr" dir="ltr"><pre><span class="c1"># first form</span>
<span class="k">for</span><span class="w"> </span>i<span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="m">1</span><span class="w"> </span><span class="m">2</span><span class="w"> </span><span class="m">3</span><span class="w"> </span><span class="m">4</span><span class="w"> </span><span class="m">5</span>
<span class="k">do</span>
<span class="w"> </span><span class="c1"># must have at least one command in a loop</span>
<span class="w"> </span><span class="nb">echo</span><span class="w"> </span><span class="nv">$i</span><span class="w"> </span><span class="c1"># just print the value of i</span>
<span class="k">done</span>
</pre></div>
<div class="mw-highlight mw-highlight-lang-bash mw-content-ltr" dir="ltr"><pre><span class="c1"># second form</span>
<span class="k">for</span><span class="w"> </span><span class="o">((</span><span class="w"> </span><span class="nv">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">1</span><span class="p">;</span><span class="w"> </span>i<span class="w"> </span>&lt;<span class="o">=</span><span class="w"> </span><span class="m">5</span><span class="p">;</span><span class="w"> </span>i++<span class="w"> </span><span class="o">))</span>
<span class="k">do</span>
<span class="w"> </span><span class="c1"># must have at least one command in a loop</span>
<span class="w"> </span><span class="nb">echo</span><span class="w"> </span><span class="nv">$i</span><span class="w"> </span><span class="c1"># just print the value of i</span>
<span class="k">done</span>
</pre></div>
<p>An empty loop (i.e., one with no commands between <code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">do</code> and <code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">done</code>) is a syntax error. If the above loops contained only comments, execution would result in the message "syntax error near unexpected token 'done'".
</p>
<div class="mw-heading mw-heading3"><h3 id="1990:_Haskell">1990: Haskell</h3></div>
<div role="note" class="hatnote navigation-not-searchable">Further information: <a href="Haskell" title="Haskell">Haskell</a></div>
<p>In Haskell98, the function <i>mapM_</i> maps a <a href="Monad_(functional_programming)" title="Monad (functional programming)">monadic</a> function over a list, as
</p>
<div class="mw-highlight mw-highlight-lang-haskell mw-content-ltr" dir="ltr"><pre><span class="nf">mapM_</span><span class="w"> </span><span class="n">print</span><span class="w"> </span><span class="p">[</span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="w"> </span><span class="o">..</span><span class="w"> </span><span class="mi">1</span><span class="p">]</span>
<span class="c1">-- prints</span>
<span class="c1">-- 4</span>
<span class="c1">-- 3</span>
<span class="c1">-- 2</span>
<span class="c1">-- 1</span>
</pre></div>
<p>The function <i>mapM</i> collects each iteration result in a list:
</p>
<div class="mw-highlight mw-highlight-lang-haskell mw-content-ltr" dir="ltr"><pre><span class="nf">result_list</span><span class="w"> </span><span class="ow">&lt;-</span><span class="w"> </span><span class="n">mapM</span><span class="w"> </span><span class="p">(</span><span class="nf">\</span><span class="w"> </span><span class="n">indx</span><span class="w"> </span><span class="ow">-&gt;</span><span class="w"> </span><span class="kr">do</span><span class="p">{</span><span class="w"> </span><span class="n">print</span><span class="w"> </span><span class="n">indx</span><span class="p">;</span><span class="w"> </span><span class="n">return</span><span class="w"> </span><span class="p">(</span><span class="n">indx</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="p">})</span><span class="w"> </span><span class="p">[</span><span class="mi">1</span><span class="o">..</span><span class="mi">4</span><span class="p">]</span>
<span class="c1">-- prints</span>
<span class="c1">-- 1</span>
<span class="c1">-- 2</span>
<span class="c1">-- 3</span>
<span class="c1">-- 4</span>
<span class="c1">-- result_list is [0,1,2,3,4]</span>
</pre></div>
<p>Haskell2010 adds functions <i>forM_</i> and <i>forM</i>, which are equivalent to <i>mapM_</i> and <i>mapM</i>, but with their arguments flipped:
</p>
<div class="mw-highlight mw-highlight-lang-haskell mw-content-ltr" dir="ltr"><pre><span class="nf">forM_</span><span class="w"> </span><span class="p">[</span><span class="mi">0</span><span class="o">..</span><span class="mi">3</span><span class="p">]</span><span class="w"> </span><span class="o">$</span><span class="w"> </span><span class="nf">\</span><span class="w"> </span><span class="n">indx</span><span class="w"> </span><span class="ow">-&gt;</span><span class="w"> </span><span class="kr">do</span>
<span class="w"> </span><span class="n">print</span><span class="w"> </span><span class="n">indx</span>
<span class="c1">-- prints</span>
<span class="c1">-- 0</span>
<span class="c1">-- 1</span>
<span class="c1">-- 2</span>
<span class="c1">-- 3</span>

<span class="nf">result_list</span><span class="w"> </span><span class="ow">&lt;-</span><span class="w"> </span><span class="n">forM</span><span class="w"> </span><span class="p">[</span><span class="sc">'a'</span><span class="o">..</span><span class="sc">'d'</span><span class="p">]</span><span class="w"> </span><span class="o">$</span><span class="w"> </span><span class="nf">\</span><span class="w"> </span><span class="n">indx</span><span class="w"> </span><span class="ow">-&gt;</span><span class="w"> </span><span class="kr">do</span>
<span class="w"> </span><span class="n">print</span><span class="w"> </span><span class="n">indx</span>
<span class="w"> </span><span class="n">return</span><span class="w"> </span><span class="n">indx</span>
<span class="c1">-- prints</span>
<span class="c1">-- 'a'</span>
<span class="c1">-- 'b'</span>
<span class="c1">-- 'c'</span>
<span class="c1">-- 'd'</span>
<span class="c1">-- result_list is ['a','b','c','d']</span>
</pre></div>
<p>When compiled with optimization, none of the expressions above will create lists. But, to save the space of the [1..5] list if optimization is turned off, a <i>forLoop_</i> function could be defined as
</p>
<div class="mw-highlight mw-highlight-lang-haskell mw-content-ltr" dir="ltr"><pre><span class="kr">import</span><span class="w"> </span><span class="nn">Control.Monad</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">M</span>

<span class="nf">forLoop_</span><span class="w"> </span><span class="ow">::</span><span class="w"> </span><span class="kt">Monad</span><span class="w"> </span><span class="n">m</span><span class="w"> </span><span class="ow">=&gt;</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="ow">-&gt;</span><span class="w"> </span><span class="p">(</span><span class="n">a</span><span class="w"> </span><span class="ow">-&gt;</span><span class="w"> </span><span class="kt">Bool</span><span class="p">)</span><span class="w"> </span><span class="ow">-&gt;</span><span class="w"> </span><span class="p">(</span><span class="n">a</span><span class="w"> </span><span class="ow">-&gt;</span><span class="w"> </span><span class="n">a</span><span class="p">)</span><span class="w"> </span><span class="ow">-&gt;</span><span class="w"> </span><span class="p">(</span><span class="n">a</span><span class="w"> </span><span class="ow">-&gt;</span><span class="w"> </span><span class="n">m</span><span class="w"> </span><span class="nb">()</span><span class="p">)</span><span class="w"> </span><span class="ow">-&gt;</span><span class="w"> </span><span class="n">m</span><span class="w"> </span><span class="nb">()</span>
<span class="nf">forLoop_</span><span class="w"> </span><span class="n">startIndx</span><span class="w"> </span><span class="n">test</span><span class="w"> </span><span class="n">next</span><span class="w"> </span><span class="n">f</span><span class="w"> </span><span class="ow">=</span><span class="w"> </span><span class="n">theLoop</span><span class="w"> </span><span class="n">startIndx</span>
<span class="w"> </span><span class="kr">where</span>
<span class="w"> </span><span class="n">theLoop</span><span class="w"> </span><span class="n">indx</span><span class="w"> </span><span class="ow">=</span><span class="w"> </span><span class="kt">M</span><span class="o">.</span><span class="n">when</span><span class="w"> </span><span class="p">(</span><span class="n">test</span><span class="w"> </span><span class="n">indx</span><span class="p">)</span><span class="w"> </span><span class="o">$</span><span class="w"> </span><span class="kr">do</span>
<span class="w"> </span><span class="n">f</span><span class="w"> </span><span class="n">indx</span>
<span class="w"> </span><span class="n">theLoop</span><span class="w"> </span><span class="p">(</span><span class="n">next</span><span class="w"> </span><span class="n">indx</span><span class="p">)</span>
</pre></div>
<p>and used as
</p>
<div class="mw-highlight mw-highlight-lang-haskell mw-content-ltr" dir="ltr"><pre><span class="nf">forLoopM_</span><span class="w"> </span><span class="p">(</span><span class="mi">0</span><span class="ow">::</span><span class="kt">Int</span><span class="p">)</span><span class="w"> </span><span class="p">(</span><span class="o">&lt;</span><span class="w"> </span><span class="n">len</span><span class="p">)</span><span class="w"> </span><span class="p">(</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="o">$</span><span class="w"> </span><span class="nf">\</span><span class="n">indx</span><span class="w"> </span><span class="ow">-&gt;</span><span class="w"> </span><span class="kr">do</span>
<span class="w"> </span><span class="c1">-- statements</span>
</pre></div>
<div class="mw-heading mw-heading3"><h3 id="1991:_Oberon-2,_Oberon-07,_Component_Pascal">1991: Oberon-2, Oberon-07, Component Pascal</h3></div>
<div role="note" class="hatnote navigation-not-searchable">Further information: <a href="Oberon_(programming_language)" title="Oberon (programming language)">Oberon (programming language)</a>, <a href="Oberon-2" title="Oberon-2">Oberon-2</a>, and <a href="Component_Pascal" title="Component Pascal">Component Pascal</a></div>
<div class="mw-highlight mw-highlight-lang-modula2 mw-content-ltr" dir="ltr"><pre><span class="kr">FOR</span> <span class="n">Counter</span><span class="o">:=</span> <span class="mi">1</span> <span class="kr">TO</span> <span class="mi">5</span> <span class="kr">DO</span>
<span class="cm">(* statement sequence *)</span>
<span class="kr">END</span>
</pre></div>
<p>In the original Oberon language, the for-loop was omitted in favor of the more general Oberon loop construct. The for-loop was reintroduced in Oberon-2.
</p>
<div class="mw-heading mw-heading3"><h3 id="1991:_Python">1991: Python</h3></div>
<div role="note" class="hatnote navigation-not-searchable">Further information: <a href="Python_(programming_language)" title="Python (programming language)">Python (programming language)</a></div><p>
Python does not contain the classical for loop, rather a <code>foreach</code> loop is used to iterate over the output of the built-in <code>range()</code> function which returns an iterable sequence of integers.</p><div class="mw-highlight mw-highlight-lang-python mw-content-ltr" dir="ltr"><pre><span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">6</span><span class="p">):</span> <span class="c1"># gives i values from 1 to 5 inclusive (but not 6)</span>
<span class="c1"># statements</span>
<span class="nb">print</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
<span class="c1"># if we want 6 we must do the following</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">6</span> <span class="o">+</span> <span class="mi">1</span><span class="p">):</span> <span class="c1"># gives i values from 1 to 6</span>
<span class="c1"># statements</span>
<span class="nb">print</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
</pre></div><p>Using <code>range(6)</code> would run the loop from 0 to 5.
</p><p>When the loop variable is not needed, it is common practice to use an underscore (<code>_</code>) as a placeholder. This convention signals to other developers that the variable will not be used inside the loop. For example:
</p>
<div class="mw-highlight mw-highlight-lang-python mw-content-ltr" dir="ltr"><pre><span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">5</span><span class="p">):</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"Hello"</span><span class="p">)</span>
</pre></div>
<p>This will print “Hello” five times without using the loop variable.
</p>
<div class="mw-heading mw-heading3"><h3 id="1993:_AppleScript">1993: AppleScript</h3></div>
<div role="note" class="hatnote navigation-not-searchable">Further information: <a href="AppleScript" title="AppleScript">AppleScript</a></div>
<div class="mw-highlight mw-highlight-lang-applescript mw-content-ltr" dir="ltr"><pre><span class="k">repeat</span> <span class="nv">with</span> <span class="nv">i</span> <span class="k">from</span> <span class="mi">1</span> <span class="k">to</span> <span class="mi">5</span>
<span class="c">-- statements</span>
<span class="nb">log</span> <span class="nv">i</span>
<span class="k">end</span> <span class="k">repeat</span>
</pre></div>
<p>It can also iterate through a list of items, similar to what can be done with arrays in other languages:
</p>
<div class="mw-highlight mw-highlight-lang-applescript mw-content-ltr" dir="ltr"><pre><span class="k">set</span> <span class="nv">x</span> <span class="k">to</span> <span class="p">{</span><span class="mi">1</span><span class="p">,</span> <span class="s2">"waffles"</span><span class="p">,</span> <span class="s2">"bacon"</span><span class="p">,</span> <span class="mf">5.1</span><span class="p">,</span> <span class="no">false</span><span class="p">}</span>
<span class="k">repeat</span> <span class="nv">with</span> <span class="nv">i</span> <span class="k">in</span> <span class="nv">x</span>
<span class="nb">log</span> <span class="nv">i</span>
<span class="k">end</span> <span class="k">repeat</span>
</pre></div>
<p>A <code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">exit repeat</code> may also be used to exit a loop at any time. Unlike other languages, AppleScript currently has no command to continue to the next iteration of a loop.
</p>
<div class="mw-heading mw-heading3"><h3 id="1993:_Crystal">1993: Crystal</h3></div>
<div role="note" class="hatnote navigation-not-searchable">Further information: <a href="Crystal_(programming_language)" title="Crystal (programming language)">Crystal (programming language)</a></div>
<div class="mw-highlight mw-highlight-lang-lua mw-content-ltr" dir="ltr"><pre><span class="kr">for</span><span class="w"> </span><span class="nv">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nv">start</span><span class="p">,</span><span class="w"> </span><span class="nv">stop</span><span class="p">,</span><span class="w"> </span><span class="nv">interval</span><span class="w"> </span><span class="kr">do</span>
<span class="w"> </span><span class="c1">-- statements</span>
<span class="kr">end</span>
</pre></div><p>
So, this code </p><div class="mw-highlight mw-highlight-lang-lua mw-content-ltr" dir="ltr"><pre><span class="kr">for</span><span class="w"> </span><span class="nv">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="kr">do</span>
<span class="w"> </span><span class="nb">print</span><span class="p">(</span><span class="nv">i</span><span class="p">)</span>
<span class="kr">end</span>
</pre></div><p> will print:
</p><div class="mw-highlight mw-highlight-lang-lua mw-content-ltr" dir="ltr"><pre><span class="mi">1</span><span class="w"> </span><span class="mi">3</span><span class="w"> </span><span class="mi">5</span>
</pre></div><p>
For-loops can also loop through a table using </p><div class="mw-highlight mw-highlight-lang-lua mw-content-ltr" dir="ltr"><pre><span class="nb">ipairs</span><span class="p">()</span>
</pre></div><p> to iterate numerically through arrays and </p><div class="mw-highlight mw-highlight-lang-lua mw-content-ltr" dir="ltr"><pre><span class="nb">pairs</span><span class="p">()</span>
</pre></div><p> to iterate randomly through dictionaries.
</p><p>Generic for-loop making use of closures:
</p>
<div class="mw-highlight mw-highlight-lang-lua mw-content-ltr" dir="ltr"><pre><span class="kr">for</span><span class="w"> </span><span class="nv">name</span><span class="p">,</span><span class="w"> </span><span class="nv">phone</span><span class="p">,</span><span class="w"> </span><span class="ow">and</span><span class="w"> </span><span class="nv">address</span><span class="w"> </span><span class="kr">in</span><span class="w"> </span><span class="nf">contacts</span><span class="p">()</span><span class="w"> </span><span class="kr">do</span>
<span class="w"> </span><span class="c1">-- contacts() must be an iterator function</span>
<span class="kr">end</span>
</pre></div>
<div class="mw-heading mw-heading3"><h3 id="1995:_ColdFusion_Markup_Language_(CFML)">1995: ColdFusion Markup Language (CFML)</h3></div>
<div role="note" class="hatnote navigation-not-searchable">Further information: <a href="ColdFusion_Markup_Language" title="ColdFusion Markup Language">ColdFusion Markup Language</a></div>
<div class="mw-heading mw-heading4"><h4 id="Script_syntax">Script syntax</h4></div>
<p>Simple index loop:
</p>
<div class="mw-highlight mw-highlight-lang-cfs mw-content-ltr" dir="ltr"><pre><span class="k">for</span> <span class="p">(</span><span class="nv">i</span> <span class="o">=</span> <span class="m">1</span><span class="p">;</span> <span class="nv">i</span> <span class="o">&lt;=</span> <span class="m">5</span><span class="p">;</span> <span class="nv">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
<span class="c1">// statements</span>
<span class="p">}</span>
</pre></div>
<p>Using an array:
</p>
<div class="mw-highlight mw-highlight-lang-cfs mw-content-ltr" dir="ltr"><pre><span class="k">for</span> <span class="p">(</span><span class="nv">i</span> <span class="k">in</span> <span class="p">[</span><span class="m">1</span><span class="p">,</span><span class="m">2</span><span class="p">,</span><span class="m">3</span><span class="p">,</span><span class="m">4</span><span class="p">,</span><span class="m">5</span><span class="p">])</span> <span class="p">{</span>
<span class="c1">// statements</span>
<span class="p">}</span>
</pre></div>
<p>Using a list of string values:
</p>
<div class="mw-highlight mw-highlight-lang-cfs mw-content-ltr" dir="ltr"><pre><span class="nv">loop</span> <span class="nv">index</span><span class="o">=</span><span class="s2">"i"</span> <span class="nv">list</span><span class="o">=</span><span class="s2">"1;2,3;4,5"</span> <span class="nv">delimiters</span><span class="o">=</span><span class="s2">",;"</span> <span class="p">{</span>
<span class="c1">// statements</span>
<span class="p">}</span>
</pre></div>
<p>The above <code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">list</code> example is only available in the dialect of CFML used by <a href="Lucee" title="Lucee">Lucee</a> and <a href="Railo" title="Railo">Railo</a>.
</p>
<div class="mw-heading mw-heading4"><h4 id="Tag_syntax">Tag syntax</h4></div>
<div role="note" class="hatnote navigation-not-searchable">Further information: <a href="Tag_(programming)" title="Tag (programming)">Tag (programming)</a></div>
<p>Simple index loop:
</p>
<div class="mw-highlight mw-highlight-lang-cfm mw-content-ltr" dir="ltr"><pre><span class="nb">&lt;cfloop</span> <span class="nv">index</span><span class="o">=</span><span class="s2">"i"</span> <span class="nv">from</span><span class="o">=</span><span class="s2">"1"</span> <span class="nv">to</span><span class="o">=</span><span class="s2">"5"</span><span class="nb">&gt;</span>
<span class="cm">&lt;!--- statements ---&gt;</span>
<span class="nb">&lt;/cfloop&gt;</span>
</pre></div>
<p>Using an array:
</p>
<div class="mw-highlight mw-highlight-lang-cfm mw-content-ltr" dir="ltr"><pre><span class="nb">&lt;cfloop</span> <span class="nv">index</span><span class="o">=</span><span class="s2">"i"</span> <span class="k">array</span><span class="o">=</span><span class="s2">"</span><span class="s s-Interp">#[1,2,3,4,5]#</span><span class="s2">"</span><span class="nb">&gt;</span>
<span class="cm">&lt;!--- statements ---&gt;</span>
<span class="nb">&lt;/cfloop&gt;</span>
</pre></div>
<p>Using a "list" of string values:
</p>
<div class="mw-highlight mw-highlight-lang-cfm mw-content-ltr" dir="ltr"><pre><span class="nb">&lt;cfloop</span> <span class="nv">index</span><span class="o">=</span><span class="s2">"i"</span> <span class="nv">list</span><span class="o">=</span><span class="s2">"1;2,3;4,5"</span> <span class="nv">delimiters</span><span class="o">=</span><span class="s2">",;"</span><span class="nb">&gt;</span>
<span class="cm">&lt;!--- statements ---&gt;</span>
<span class="nb">&lt;/cfloop&gt;</span>
</pre></div>
<div class="mw-heading mw-heading3"><h3 id="1995:_Java">1995: Java</h3></div>
<div role="note" class="hatnote navigation-not-searchable">Further information: <a href="Java_(programming_language)" title="Java (programming language)">Java (programming language)</a></div>
<div class="mw-highlight mw-highlight-lang-java mw-content-ltr" dir="ltr"><pre><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mi">5</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="c1">//perform functions within the loop;</span>
<span class="w"> </span><span class="c1">//can use the statement 'break;' to exit early;</span>
<span class="w"> </span><span class="c1">//can use the statement 'continue;' to skip the current iteration</span>
<span class="p">}</span>
</pre></div>
<p>For the extended for-loop, see <a href="Foreach_loop#Java" title="Foreach loop">Foreach loop §&nbsp;Java</a>.
</p>
<div class="mw-heading mw-heading3"><h3 id="1995:_JavaScript">1995: JavaScript</h3></div>
<div role="note" class="hatnote navigation-not-searchable">Further information: <a href="JavaScript" title="JavaScript">JavaScript</a></div>
<p>JavaScript supports C-style "three-expression" loops. The <code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">break</code> and <code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">continue</code> statements are supported inside loops.
</p>
<div class="mw-highlight mw-highlight-lang-javascript mw-content-ltr" dir="ltr"><pre><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">var</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mf">5</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="c1">// ...</span>
<span class="p">}</span>
</pre></div>
<p>Alternatively, it is possible to iterate over all keys of an array.
</p>
<div class="mw-highlight mw-highlight-lang-javascript mw-content-ltr" dir="ltr"><pre><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">var</span><span class="w"> </span><span class="nx">key</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="nx">array</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// also works for assoc. arrays</span>
<span class="w"> </span><span class="c1">// use array[key]</span>
<span class="w"> </span><span class="p">...</span>
<span class="p">}</span>
</pre></div>
<div class="mw-heading mw-heading3"><h3 id="1995:_PHP">1995: PHP</h3></div>
<div role="note" class="hatnote navigation-not-searchable">Further information: <a href="PHP" title="PHP">PHP</a></div>
<p>This prints out a triangle of *
</p>
<div class="mw-highlight mw-highlight-lang-php mw-content-ltr" dir="ltr"><pre><span class="k">for</span> <span class="p">(</span><span class="nv">$i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nv">$i</span> <span class="o">&lt;=</span> <span class="mi">5</span><span class="p">;</span> <span class="nv">$i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
<span class="k">for</span> <span class="p">(</span><span class="nv">$j</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nv">$j</span> <span class="o">&lt;=</span> <span class="nv">$i</span><span class="p">;</span> <span class="nv">$j</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
<span class="k">echo</span> <span class="s2">"*"</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">echo</span> <span class="s2">"&lt;br /&gt;</span><span class="se">\n</span><span class="s2">"</span><span class="p">;</span>
<span class="p">}</span>
</pre></div>
<div class="mw-heading mw-heading3"><h3 id="1995:_Ruby">1995: Ruby</h3></div>
<div role="note" class="hatnote navigation-not-searchable">Further information: <a href="Ruby_(programming_language)" title="Ruby (programming language)">Ruby (programming language)</a></div>
<div class="mw-highlight mw-highlight-lang-ruby mw-content-ltr" dir="ltr"><pre><span class="k">for</span><span class="w"> </span><span class="n">the</span><span class="w"> </span><span class="n">counter</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">1</span><span class="o">..</span><span class="mi">5</span>
<span class="w"> </span><span class="c1"># statements</span>
<span class="k">end</span>

<span class="mi">5</span><span class="o">.</span><span class="n">times</span><span class="w"> </span><span class="k">do</span><span class="w"> </span><span class="o">|</span><span class="n">counter</span><span class="o">|</span><span class="w"> </span><span class="c1"># counter iterates from 0 to 4</span>
<span class="w"> </span><span class="c1"># statements</span>
<span class="k">end</span>

<span class="mi">1</span><span class="o">.</span><span class="n">upto</span><span class="p">(</span><span class="mi">5</span><span class="p">)</span><span class="w"> </span><span class="k">do</span><span class="w"> </span><span class="o">|</span><span class="n">counter</span><span class="o">|</span>
<span class="w"> </span><span class="c1"># statements</span>
<span class="k">end</span>
</pre></div>
<p><a href="Ruby_programming_language" class="mw-redirect" title="Ruby programming language">Ruby</a> has several possible syntaxes, including the above samples.
</p>
<div class="mw-heading mw-heading3"><h3 id="1996:_OCaml">1996: OCaml</h3></div>
<div role="note" class="hatnote navigation-not-searchable">Further information: <a href="OCaml" title="OCaml">OCaml</a></div>
<p>See expression syntax.<sup id="cite_ref-7" class="reference"><a href="#cite_note-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-highlight mw-highlight-lang-ocaml mw-content-ltr" dir="ltr"><pre> <span class="c">(* for_statement:= "for" ident '=' expr ( "to" ∣ "down to" ) expr "do" expr "done" *)</span>

<span class="k">for</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">1</span> <span class="k">to</span> <span class="mi">5</span> <span class="k">do</span>
<span class="c">(* statements *)</span>
<span class="k">done</span> <span class="o">;;</span>

<span class="k">for</span> <span class="n">j</span> <span class="o">=</span> <span class="mi">5</span> <span class="n">down</span> <span class="k">to</span> <span class="mi">0</span> <span class="k">do</span>
<span class="c">(* statements *)</span>
<span class="k">done</span> <span class="o">;;</span>
</pre></div>
<div class="mw-heading mw-heading3"><h3 id="1998:_ActionScript_3">1998: ActionScript 3</h3></div>
<div role="note" class="hatnote navigation-not-searchable">Further information: <a href="ActionScript" title="ActionScript">ActionScript</a></div>
<div class="mw-highlight mw-highlight-lang-actionscript3 mw-content-ltr" dir="ltr"><pre><span class="k">for</span><span class="w"> </span><span class="o">(</span><span class="kd">var</span><span class="w"> </span><span class="n">counter</span><span class="p">:</span><span class="kt">uint</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="o">;</span><span class="w"> </span><span class="n">counter</span><span class="w"> </span><span class="o">&lt;=</span><span class="w"> </span><span class="mi">5</span><span class="o">;</span><span class="w"> </span><span class="n">counter</span><span class="o">++){</span>
<span class="w"> </span><span class="c1">//statement;</span>
<span class="o">}</span>
</pre></div>
<div class="mw-heading mw-heading3"><h3 id="2008:_Small_Basic">2008: Small Basic</h3></div>
<div role="note" class="hatnote navigation-not-searchable">Further information: <a href="Microsoft_Small_Basic" title="Microsoft Small Basic">Microsoft Small Basic</a></div>
<div class="mw-highlight mw-highlight-lang-vbnet mw-content-ltr" dir="ltr"><pre><span class="k">For</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="k">To</span><span class="w"> </span><span class="mi">10</span>
<span class="w"> </span><span class="c">' Statements</span>
<span class="n">EndFor</span>
</pre></div>
<div class="mw-heading mw-heading3"><h3 id="2008:_Nim">2008: Nim</h3></div>
<div role="note" class="hatnote navigation-not-searchable">Further information: <a href="Nim_(programming_language)" title="Nim (programming language)">Nim (programming language)</a></div>
<p><a href="Nim_(programming_language)" title="Nim (programming language)">Nim</a> has a <code>foreach</code>-type loop and various operations for creating iterators.<sup id="cite_ref-8" class="reference"><a href="#cite_note-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-highlight mw-highlight-lang-nim mw-content-ltr" dir="ltr"><pre><span class="k">for</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="mi">5</span><span class="w"> </span><span class="p">..</span><span class="w"> </span><span class="mi">10</span><span class="p">:</span>
<span class="w"> </span><span class="c"># statements</span>
</pre></div>
<div class="mw-heading mw-heading3"><h3 id="2009:_Go">2009: Go</h3></div>
<div role="note" class="hatnote navigation-not-searchable">Further information: <a href="Go_(programming_language)" title="Go (programming language)">Go (programming language)</a></div>
<div class="mw-highlight mw-highlight-lang-go mw-content-ltr" dir="ltr"><pre><span class="k">for</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">&lt;=</span><span class="w"> </span><span class="mi">10</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="c1">// statements</span>
<span class="p">}</span>
</pre></div>
<div class="mw-heading mw-heading3"><h3 id="2010:_Rust">2010: Rust</h3></div>
<div role="note" class="hatnote navigation-not-searchable">Further information: <a href="Rust_(programming_language)" title="Rust (programming language)">Rust (programming language)</a></div>
<div class="mw-highlight mw-highlight-lang-rust mw-content-ltr" dir="ltr"><pre><span class="k">for</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">0</span><span class="o">..</span><span class="mi">10</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="c1">// statements</span>
<span class="p">}</span>
</pre></div>
<div class="mw-heading mw-heading3"><h3 id="2012:_Julia">2012: Julia</h3></div>
<div role="note" class="hatnote navigation-not-searchable">Further information: <a href="Julia_(programming_language)" title="Julia (programming language)">Julia (programming language)</a></div>
<div class="mw-highlight mw-highlight-lang-julia mw-content-ltr" dir="ltr"><pre><span class="k">for</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="o">:</span><span class="mi">10</span>
<span class="w"> </span><span class="c"># statements</span>
<span class="k">end</span>
</pre></div>
<div class="mw-heading mw-heading2"><h2 id="See_also">See also</h2></div>
<ul><li><a href="Do_while_loop" title="Do while loop">Do while loop</a></li>
<li><a href="Foreach" class="mw-redirect" title="Foreach">Foreach</a></li>
<li><a href="While_loop" title="While loop">While loop</a></li>
<li><a href="Primitive_recursive_function" title="Primitive recursive function">Primitive recursive function</a></li>
<li><a href="General_recursive_function" title="General recursive function">General recursive function</a></li></ul>
<div class="mw-heading mw-heading2"><h2 id="References">References</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1239543626">
/* start https://en.wikipedia.org/ */


.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}


/* end https://en.wikipedia.org/ */
</style><div class="reflist">
<div class="mw-references-wrap"><ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><b><a href="#cite_ref-1">^</a></b></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r1238218222">
/* start https://en.wikipedia.org/ */


.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("./mw/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("./mw/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("./mw/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("./mw/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}


/* end https://en.wikipedia.org/ */
</style><cite id="CITEREFWirth1973" class="citation book cs1"><a href="Niklaus_Wirth" title="Niklaus Wirth">Wirth, Niklaus</a> (1973). "Preface". <i>Systematic Programming: An Introduction</i>. Prentice-Hall. pp.&nbsp;xiii. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&nbsp;<bdi>0138803692</bdi>.</cite></span>
</li>
<li id="cite_note-ken-2"><span class="mw-cite-backlink"><b><a href="#cite_ref-ken_2-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFThompson" class="citation audio-visual cs1"><a href="Ken_Thompson" title="Ken Thompson">Thompson, Ken</a>. <a rel="nofollow" class="external text" href="https://www.youtube.com/watch?v=EY6q5dv_B-o&amp;t=2330"><i>VCF East 2019 – Brian Kernighan interviews Ken Thompson</i></a>. <i><a href="YouTube" title="YouTube">YouTube</a></i>. <a rel="nofollow" class="external text" href="https://ghostarchive.org/varchive/youtube/20211212/EY6q5dv_B-o">Archived</a> from the original on 2021-12-12<span class="reference-accessdate">. Retrieved <span class="nowrap">2020-11-16</span></span>. <q>I saw Johnson's semicolon version of the for loop and I put that in [B], I stole it.</q></cite></span>
</li>
<li id="cite_note-3"><span class="mw-cite-backlink"><b><a href="#cite_ref-3">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external free" href="http://www.knosof.co.uk/vulnerabilities/loopcntrl.pdf">http://www.knosof.co.uk/vulnerabilities/loopcntrl.pdf</a> Analysis of loop control variables in C</span>
</li>
<li id="cite_note-4"><span class="mw-cite-backlink"><b><a href="#cite_ref-4">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://msdn.microsoft.com/en-us/library/6t66728h.aspx">"Compiler Warning (level 4) C4127"</a>. Microsoft<span class="reference-accessdate">. Retrieved <span class="nowrap">29 June</span> 2011</span>.</cite></span>
</li>
<li id="cite_note-5"><span class="mw-cite-backlink"><b><a href="#cite_ref-5">^</a></b></span> <span class="reference-text"><cite class="citation book cs1"><i>PostScript Language Reference</i>. Addison-Wesley Publishing Company. 1999. p.&nbsp;596. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&nbsp;<bdi>0-201-37922-8</bdi>.</cite></span>
</li>
<li id="cite_note-6"><span class="mw-cite-backlink"><b><a href="#cite_ref-6">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://pscript.dubmun.com/tutorial4.html">"PostScript Tutorial - Loops"</a>.</cite></span>
</li>
<li id="cite_note-7"><span class="mw-cite-backlink"><b><a href="#cite_ref-7">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://archive.today/20130412180254/http://caml.inria.fr/pub/docs/manual-ocaml-4.00/expr.html">"OCaml expression syntax"</a>. Archived from <a rel="nofollow" class="external text" href="http://caml.inria.fr/pub/docs/manual-ocaml-4.00/expr.html">the original</a> on 2013-04-12<span class="reference-accessdate">. Retrieved <span class="nowrap">2013-03-19</span></span>.</cite></span>
</li>
<li id="cite_note-8"><span class="mw-cite-backlink"><b><a href="#cite_ref-8">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external free" href="https://nim-lang.org/docs/system.html#...i%2CT%2CT">https://nim-lang.org/docs/system.html#...i%2CT%2CT</a> ".. iterator"</span>
</li>
</ol></div></div></div><!--htdig_noindex--><div><div class="zim-footer">
This article is issued from <a class="external text" title="Last edited on 2025-07-12" href="https://en.wikipedia.org/wiki/?title=For_loop&amp;oldid=1300201973">Wikipedia</a>. The text is available under <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">Creative Commons Attribution-Share Alike 4.0</a> unless otherwise noted. Additional terms may apply for the media files.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>

</body></html>